   1              		.syntax unified
   2              		.cpu cortex-m3
   3              		.fpu softvfp
   4              		.eabi_attribute 20, 1
   5              		.eabi_attribute 21, 1
   6              		.eabi_attribute 23, 3
   7              		.eabi_attribute 24, 1
   8              		.eabi_attribute 25, 1
   9              		.eabi_attribute 26, 1
  10              		.eabi_attribute 30, 4
  11              		.eabi_attribute 34, 1
  12              		.eabi_attribute 18, 4
  13              		.thumb
  14              		.syntax unified
  15              		.file	"utils.c"
  16              		.text
  17              	.Ltext0:
  18              		.cfi_sections	.debug_frame
  19              		.section	.text.put_dump,"ax",%progbits
  20              		.align	1
  21              		.global	put_dump
  22              		.thumb
  23              		.thumb_func
  25              	put_dump:
  26              	.LFB0:
  27              		.file 1 "uc_libc_dev/misc/utils.c"
   1:uc_libc_dev/misc/utils.c **** #include "utils.h"
   2:uc_libc_dev/misc/utils.c **** 
   3:uc_libc_dev/misc/utils.c **** #if (UTIL_USE_DUMP == pdON)
   4:uc_libc_dev/misc/utils.c **** #include "stdio_uc.h"
   5:uc_libc_dev/misc/utils.c **** #endif
   6:uc_libc_dev/misc/utils.c **** 
   7:uc_libc_dev/misc/utils.c **** #if (UTIL_USE_XATOF == pdON)
   8:uc_libc_dev/misc/utils.c **** #include <ctype.h>
   9:uc_libc_dev/misc/utils.c **** #endif
  10:uc_libc_dev/misc/utils.c **** 
  11:uc_libc_dev/misc/utils.c **** #if (UTIL_USE_XITOA == pdON)
  12:uc_libc_dev/misc/utils.c **** #include <string.h>
  13:uc_libc_dev/misc/utils.c **** #endif
  14:uc_libc_dev/misc/utils.c **** 
  15:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
  16:uc_libc_dev/misc/utils.c **** // Descrição: 	Emprime uma linhas no formato HEX e ASCII 
  17:uc_libc_dev/misc/utils.c **** // Parametros: 	*buff: Ponteiro, endereço, do buffer a ser impresso
  18:uc_libc_dev/misc/utils.c **** //				offset: endereço do buffer do inicio da impressão
  19:uc_libc_dev/misc/utils.c **** //				cnt: Quantidade de bytes a ser exibido na linha
  20:uc_libc_dev/misc/utils.c **** // Retorna: 	Nada
  21:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
  22:uc_libc_dev/misc/utils.c **** #if (UTIL_USE_DUMP == pdON)
  23:uc_libc_dev/misc/utils.c **** #ifdef CPU_AVR
  24:uc_libc_dev/misc/utils.c **** void put_dump (const u8 *buff, u16 showAddrOffSet, int cnt) {
  25:uc_libc_dev/misc/utils.c **** #else
  26:uc_libc_dev/misc/utils.c **** void put_dump (const u8 *buff, u32 showAddrOffSet, int cnt) {
  28              		.loc 1 26 0
  29              		.cfi_startproc
  30              		@ args = 0, pretend = 0, frame = 0
  31              		@ frame_needed = 0, uses_anonymous_args = 0
  32              	.LVL0:
  33 0000 70B5     		push	{r4, r5, r6, lr}
  34              	.LCFI0:
  35              		.cfi_def_cfa_offset 16
  36              		.cfi_offset 4, -16
  37              		.cfi_offset 5, -12
  38              		.cfi_offset 6, -8
  39              		.cfi_offset 14, -4
  40              		.loc 1 26 0
  41 0002 0646     		mov	r6, r0
  42 0004 1546     		mov	r5, r2
  27:uc_libc_dev/misc/utils.c **** #endif
  28:uc_libc_dev/misc/utils.c **** 	u8 n;
  29:uc_libc_dev/misc/utils.c **** 
  30:uc_libc_dev/misc/utils.c **** 	// IMPRIME O ENDEREÇO INICIAL (OFFSET)
  31:uc_libc_dev/misc/utils.c **** 	#ifdef CPU_AVR
  32:uc_libc_dev/misc/utils.c **** 	lprintf("%04X: ", showAddrOffSet);
  33:uc_libc_dev/misc/utils.c **** 	#else
  34:uc_libc_dev/misc/utils.c **** 	lprintf("%08X: ", showAddrOffSet);
  43              		.loc 1 34 0
  44 0006 0120     		movs	r0, #1
  45              	.LVL1:
  46 0008 0A46     		mov	r2, r1
  47              	.LVL2:
  48 000a 1549     		ldr	r1, .L11
  49              	.LVL3:
  50 000c FFF7FEFF 		bl	rprintf
  51              	.LVL4:
  35:uc_libc_dev/misc/utils.c **** 	#endif
  36:uc_libc_dev/misc/utils.c **** 	
  37:uc_libc_dev/misc/utils.c **** 	// IMPRIME HEXDECIMAL
  38:uc_libc_dev/misc/utils.c **** 	for(n = 0; n < cnt; n++)
  52              		.loc 1 38 0
  53 0010 0023     		movs	r3, #0
  54              	.LVL5:
  55              	.L2:
  56 0012 5C1C     		adds	r4, r3, #1
  57              		.loc 1 38 0 is_stmt 0 discriminator 1
  58 0014 DBB2     		uxtb	r3, r3
  59 0016 AB42     		cmp	r3, r5
  60 0018 06DA     		bge	.L9
  39:uc_libc_dev/misc/utils.c **** 		lprintf(" %02X", buff[n]);
  61              		.loc 1 39 0 is_stmt 1 discriminator 3
  62 001a F25C     		ldrb	r2, [r6, r3]	@ zero_extendqisi2
  63 001c 1149     		ldr	r1, .L11+4
  64 001e 0120     		movs	r0, #1
  65 0020 FFF7FEFF 		bl	rprintf
  66              	.LVL6:
  67 0024 2346     		mov	r3, r4
  68 0026 F4E7     		b	.L2
  69              	.LVL7:
  70              	.L9:
  40:uc_libc_dev/misc/utils.c **** 		
  41:uc_libc_dev/misc/utils.c **** 	// IMPRIME SEPARADOR
  42:uc_libc_dev/misc/utils.c **** 	lprintf(" ; ");
  71              		.loc 1 42 0
  72 0028 0F49     		ldr	r1, .L11+8
  73 002a 0120     		movs	r0, #1
  74 002c FFF7FEFF 		bl	rprintf
  75              	.LVL8:
  43:uc_libc_dev/misc/utils.c **** 	
  44:uc_libc_dev/misc/utils.c **** 	// IMPRIME CHAR
  45:uc_libc_dev/misc/utils.c **** 	for(n = 0; n < cnt; n++) {
  76              		.loc 1 45 0
  77 0030 0024     		movs	r4, #0
  78              	.LVL9:
  79              	.L4:
  80              		.loc 1 45 0 is_stmt 0 discriminator 1
  81 0032 E3B2     		uxtb	r3, r4
  82              	.LVL10:
  83 0034 9D42     		cmp	r5, r3
  84 0036 0DDD     		ble	.L10
  46:uc_libc_dev/misc/utils.c **** 		//if ((buff[n] < 0x20)||(buff[n] >= 0x7F))
  47:uc_libc_dev/misc/utils.c **** 		if ( buff[n] < 0x20 )
  85              		.loc 1 47 0 is_stmt 1
  86 0038 F25C     		ldrb	r2, [r6, r3]	@ zero_extendqisi2
  87 003a 1F2A     		cmp	r2, #31
  88 003c 04D8     		bhi	.L5
  48:uc_libc_dev/misc/utils.c **** 			lprintf(".");
  89              		.loc 1 48 0
  90 003e 0B49     		ldr	r1, .L11+12
  91 0040 0120     		movs	r0, #1
  92 0042 FFF7FEFF 		bl	rprintf
  93              	.LVL11:
  94 0046 03E0     		b	.L6
  95              	.LVL12:
  96              	.L5:
  49:uc_libc_dev/misc/utils.c **** 		else
  50:uc_libc_dev/misc/utils.c **** 			lprintf("%c", buff[n]);
  97              		.loc 1 50 0
  98 0048 0949     		ldr	r1, .L11+16
  99 004a 0120     		movs	r0, #1
 100 004c FFF7FEFF 		bl	rprintf
 101              	.LVL13:
 102              	.L6:
 103 0050 0134     		adds	r4, r4, #1
 104              	.LVL14:
 105 0052 EEE7     		b	.L4
 106              	.LVL15:
 107              	.L10:
  51:uc_libc_dev/misc/utils.c **** 	}
  52:uc_libc_dev/misc/utils.c **** 	
  53:uc_libc_dev/misc/utils.c **** 	lprintf(CMD_TERMINATOR);
 108              		.loc 1 53 0
 109 0054 0749     		ldr	r1, .L11+20
 110 0056 0120     		movs	r0, #1
  54:uc_libc_dev/misc/utils.c **** }
 111              		.loc 1 54 0
 112 0058 BDE87040 		pop	{r4, r5, r6, lr}
 113              	.LCFI1:
 114              		.cfi_restore 14
 115              		.cfi_restore 6
 116              		.cfi_restore 5
 117              		.cfi_restore 4
 118              		.cfi_def_cfa_offset 0
 119              	.LVL16:
  53:uc_libc_dev/misc/utils.c **** }
 120              		.loc 1 53 0
 121 005c FFF7FEBF 		b	rprintf
 122              	.LVL17:
 123              	.L12:
 124              		.align	2
 125              	.L11:
 126 0060 00000000 		.word	.LC0
 127 0064 07000000 		.word	.LC1
 128 0068 0D000000 		.word	.LC2
 129 006c 11000000 		.word	.LC3
 130 0070 13000000 		.word	.LC4
 131 0074 16000000 		.word	.LC5
 132              		.cfi_endproc
 133              	.LFE0:
 135              		.section	.text.put_dump16,"ax",%progbits
 136              		.align	1
 137              		.global	put_dump16
 138              		.thumb
 139              		.thumb_func
 141              	put_dump16:
 142              	.LFB1:
  55:uc_libc_dev/misc/utils.c **** 
  56:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
  57:uc_libc_dev/misc/utils.c **** // Descrição: 	Emprime uma linhas no formato HEX e ASCII 
  58:uc_libc_dev/misc/utils.c **** // Parametros: 	*buff: Ponteiro, endereço, do buffer a ser impresso
  59:uc_libc_dev/misc/utils.c **** //				offset: endereço do buffer do inicio da impressão
  60:uc_libc_dev/misc/utils.c **** //				cnt: Quantidade de bytes a ser exibido na linha
  61:uc_libc_dev/misc/utils.c **** //				mask: Quantidade de bytes que deve ser exibido na linha. 
  62:uc_libc_dev/misc/utils.c **** //					Isto é útil para quanod a cnt for menor que mask, imprimir caracter em branco para fazer
  63:uc_libc_dev/misc/utils.c **** //					alinhamento entre as colunas da impressão anterior
  64:uc_libc_dev/misc/utils.c **** // Retorna: 	Nada
  65:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
  66:uc_libc_dev/misc/utils.c **** #ifdef CPU_AVR
  67:uc_libc_dev/misc/utils.c **** void put_dump16 (const u8 *buff, u16 showAddrOffSet, int cnt, u8 mask ) {
  68:uc_libc_dev/misc/utils.c **** #else
  69:uc_libc_dev/misc/utils.c **** void put_dump16 (const u8 *buff, u32 showAddrOffSet, int cnt, u8 mask ) {
 143              		.loc 1 69 0
 144              		.cfi_startproc
 145              		@ args = 0, pretend = 0, frame = 0
 146              		@ frame_needed = 0, uses_anonymous_args = 0
 147              	.LVL18:
 148 0000 F8B5     		push	{r3, r4, r5, r6, r7, lr}
 149              	.LCFI2:
 150              		.cfi_def_cfa_offset 24
 151              		.cfi_offset 3, -24
 152              		.cfi_offset 4, -20
 153              		.cfi_offset 5, -16
 154              		.cfi_offset 6, -12
 155              		.cfi_offset 7, -8
 156              		.cfi_offset 14, -4
 157              		.loc 1 69 0
 158 0002 0646     		mov	r6, r0
 159 0004 1546     		mov	r5, r2
  70:uc_libc_dev/misc/utils.c **** #endif
  71:uc_libc_dev/misc/utils.c **** 	u8 n;
  72:uc_libc_dev/misc/utils.c **** 
  73:uc_libc_dev/misc/utils.c **** 	// IMPRIME O ENDEREÇO INICIAL (OFFSET)
  74:uc_libc_dev/misc/utils.c **** 	#ifdef CPU_AVR
  75:uc_libc_dev/misc/utils.c **** 	lprintf("%04x ", showAddrOffSet);
  76:uc_libc_dev/misc/utils.c **** 	#else
  77:uc_libc_dev/misc/utils.c **** 	lprintf("%08x ", showAddrOffSet);
 160              		.loc 1 77 0
 161 0006 0120     		movs	r0, #1
 162              	.LVL19:
 163 0008 0A46     		mov	r2, r1
 164              	.LVL20:
 165 000a 1B49     		ldr	r1, .L25
 166              	.LVL21:
  69:uc_libc_dev/misc/utils.c **** #endif
 167              		.loc 1 69 0
 168 000c 1F46     		mov	r7, r3
 169              		.loc 1 77 0
 170 000e FFF7FEFF 		bl	rprintf
 171              	.LVL22:
  78:uc_libc_dev/misc/utils.c **** 	#endif
  79:uc_libc_dev/misc/utils.c **** 	
  80:uc_libc_dev/misc/utils.c **** 	// IMPRIME HEXDECIMAL
  81:uc_libc_dev/misc/utils.c **** 	for(n=0; n<cnt; n++) lprintf(" %02x", buff[n]);
 172              		.loc 1 81 0
 173 0012 0023     		movs	r3, #0
 174              	.LVL23:
 175              	.L14:
 176 0014 5C1C     		adds	r4, r3, #1
 177              		.loc 1 81 0 is_stmt 0 discriminator 1
 178 0016 DBB2     		uxtb	r3, r3
 179 0018 AB42     		cmp	r3, r5
 180 001a 06DA     		bge	.L22
 181              		.loc 1 81 0 discriminator 3
 182 001c F25C     		ldrb	r2, [r6, r3]	@ zero_extendqisi2
 183 001e 1749     		ldr	r1, .L25+4
 184 0020 0120     		movs	r0, #1
 185 0022 FFF7FEFF 		bl	rprintf
 186              	.LVL24:
 187 0026 2346     		mov	r3, r4
 188 0028 F4E7     		b	.L14
 189              	.LVL25:
 190              	.L22:
  82:uc_libc_dev/misc/utils.c **** 		
  83:uc_libc_dev/misc/utils.c **** 	// CASO A QUANTIDADE DE BYTES DA LINHA NÃO SEJA O TAMANHO DA MASK
  84:uc_libc_dev/misc/utils.c **** 	// Isto preenche a coluna hex com espaços para que a coluna dos caracteres se alinhe com as impres
  85:uc_libc_dev/misc/utils.c **** 	for(n=cnt; n<mask; n++)	lprintf("   ");
 191              		.loc 1 85 0 is_stmt 1
 192 002a ECB2     		uxtb	r4, r5
 193              	.LVL26:
 194              	.L16:
 195              		.loc 1 85 0 is_stmt 0 discriminator 1
 196 002c BC42     		cmp	r4, r7
 197 002e 06D2     		bcs	.L23
 198              		.loc 1 85 0 discriminator 3
 199 0030 1349     		ldr	r1, .L25+8
 200 0032 0120     		movs	r0, #1
 201 0034 0134     		adds	r4, r4, #1
 202              	.LVL27:
 203 0036 FFF7FEFF 		bl	rprintf
 204              	.LVL28:
 205 003a E4B2     		uxtb	r4, r4
 206              	.LVL29:
 207 003c F6E7     		b	.L16
 208              	.L23:
  86:uc_libc_dev/misc/utils.c **** 	
  87:uc_libc_dev/misc/utils.c **** 	// IMPRIME SEPARADOR
  88:uc_libc_dev/misc/utils.c **** 	lprintf(" : ");
 209              		.loc 1 88 0 is_stmt 1
 210 003e 1149     		ldr	r1, .L25+12
 211 0040 0120     		movs	r0, #1
 212 0042 FFF7FEFF 		bl	rprintf
 213              	.LVL30:
  89:uc_libc_dev/misc/utils.c **** 	
  90:uc_libc_dev/misc/utils.c **** 	// IMPRIME CHAR
  91:uc_libc_dev/misc/utils.c **** 	for(n = 0; n < cnt; n++) {
 214              		.loc 1 91 0
 215 0046 0024     		movs	r4, #0
 216              	.LVL31:
 217              	.L18:
 218              		.loc 1 91 0 is_stmt 0 discriminator 1
 219 0048 E3B2     		uxtb	r3, r4
 220              	.LVL32:
 221 004a 9D42     		cmp	r5, r3
 222 004c 0DDD     		ble	.L24
  92:uc_libc_dev/misc/utils.c **** 		//if ((buff[n] < 0x20)||(buff[n] >= 0x7F))
  93:uc_libc_dev/misc/utils.c **** 		if ( buff[n] < 0x20 )	lprintf(".");
 223              		.loc 1 93 0 is_stmt 1
 224 004e F25C     		ldrb	r2, [r6, r3]	@ zero_extendqisi2
 225 0050 1F2A     		cmp	r2, #31
 226 0052 04D8     		bhi	.L19
 227              		.loc 1 93 0 is_stmt 0 discriminator 1
 228 0054 0C49     		ldr	r1, .L25+16
 229 0056 0120     		movs	r0, #1
 230 0058 FFF7FEFF 		bl	rprintf
 231              	.LVL33:
 232 005c 03E0     		b	.L20
 233              	.LVL34:
 234              	.L19:
  94:uc_libc_dev/misc/utils.c **** 		else					lprintf("%c", buff[n]);
 235              		.loc 1 94 0 is_stmt 1
 236 005e 0B49     		ldr	r1, .L25+20
 237 0060 0120     		movs	r0, #1
 238 0062 FFF7FEFF 		bl	rprintf
 239              	.LVL35:
 240              	.L20:
 241 0066 0134     		adds	r4, r4, #1
 242              	.LVL36:
 243 0068 EEE7     		b	.L18
 244              	.LVL37:
 245              	.L24:
  95:uc_libc_dev/misc/utils.c **** 	}
  96:uc_libc_dev/misc/utils.c **** 	
  97:uc_libc_dev/misc/utils.c **** 	lprintf(CMD_TERMINATOR);
 246              		.loc 1 97 0
 247 006a 0949     		ldr	r1, .L25+24
 248 006c 0120     		movs	r0, #1
  98:uc_libc_dev/misc/utils.c **** }
 249              		.loc 1 98 0
 250 006e BDE8F840 		pop	{r3, r4, r5, r6, r7, lr}
 251              	.LCFI3:
 252              		.cfi_restore 14
 253              		.cfi_restore 7
 254              		.cfi_restore 6
 255              		.cfi_restore 5
 256              		.cfi_restore 4
 257              		.cfi_restore 3
 258              		.cfi_def_cfa_offset 0
 259              	.LVL38:
  97:uc_libc_dev/misc/utils.c **** }
 260              		.loc 1 97 0
 261 0072 FFF7FEBF 		b	rprintf
 262              	.LVL39:
 263              	.L26:
 264 0076 00BF     		.align	2
 265              	.L25:
 266 0078 18000000 		.word	.LC6
 267 007c 1E000000 		.word	.LC7
 268 0080 24000000 		.word	.LC8
 269 0084 28000000 		.word	.LC9
 270 0088 11000000 		.word	.LC3
 271 008c 13000000 		.word	.LC4
 272 0090 16000000 		.word	.LC5
 273              		.cfi_endproc
 274              	.LFE1:
 276              		.section	.text.buffer_dump,"ax",%progbits
 277              		.align	1
 278              		.global	buffer_dump
 279              		.thumb
 280              		.thumb_func
 282              	buffer_dump:
 283              	.LFB2:
  99:uc_libc_dev/misc/utils.c **** 
 100:uc_libc_dev/misc/utils.c **** void buffer_dump(u8 *buff, int cnt, u8 mask) {
 284              		.loc 1 100 0
 285              		.cfi_startproc
 286              		@ args = 0, pretend = 0, frame = 0
 287              		@ frame_needed = 0, uses_anonymous_args = 0
 288              	.LVL40:
 289 0000 70B5     		push	{r4, r5, r6, lr}
 290              	.LCFI4:
 291              		.cfi_def_cfa_offset 16
 292              		.cfi_offset 4, -16
 293              		.cfi_offset 5, -12
 294              		.cfi_offset 6, -8
 295              		.cfi_offset 14, -4
 296 0002 0446     		mov	r4, r0
 297 0004 0D46     		mov	r5, r1
 298 0006 1646     		mov	r6, r2
 299              	.LVL41:
 300              	.L28:
 101:uc_libc_dev/misc/utils.c **** 	u8 *ptr;
 102:uc_libc_dev/misc/utils.c **** 	
 103:uc_libc_dev/misc/utils.c **** 	for (ptr=buff; cnt >= 16; ptr += 16, cnt -= 16)
 301              		.loc 1 103 0 discriminator 1
 302 0008 0F2D     		cmp	r5, #15
 303 000a 08DD     		ble	.L31
 104:uc_libc_dev/misc/utils.c **** 		#ifdef CPU_AVR
 105:uc_libc_dev/misc/utils.c **** 		put_dump16((u8*)ptr, (u16)ptr, 16, mask);
 106:uc_libc_dev/misc/utils.c **** 		#else
 107:uc_libc_dev/misc/utils.c **** 		put_dump16((u8*)ptr, (u32)ptr, 16, mask);
 304              		.loc 1 107 0 discriminator 3
 305 000c 2146     		mov	r1, r4
 306 000e 2046     		mov	r0, r4
 307 0010 3346     		mov	r3, r6
 308 0012 1022     		movs	r2, #16
 309 0014 FFF7FEFF 		bl	put_dump16
 310              	.LVL42:
 103:uc_libc_dev/misc/utils.c **** 		#ifdef CPU_AVR
 311              		.loc 1 103 0 discriminator 3
 312 0018 1034     		adds	r4, r4, #16
 313              	.LVL43:
 314 001a 103D     		subs	r5, r5, #16
 315              	.LVL44:
 316 001c F4E7     		b	.L28
 317              	.L31:
 108:uc_libc_dev/misc/utils.c **** 		#endif
 109:uc_libc_dev/misc/utils.c **** 					
 110:uc_libc_dev/misc/utils.c **** 	if (cnt) 
 318              		.loc 1 110 0
 319 001e 3DB1     		cbz	r5, .L27
 111:uc_libc_dev/misc/utils.c **** 		#ifdef CPU_AVR
 112:uc_libc_dev/misc/utils.c **** 		put_dump16((u8*)ptr, (u16)ptr, cnt, mask);
 113:uc_libc_dev/misc/utils.c **** 		#else
 114:uc_libc_dev/misc/utils.c **** 		put_dump16((u8*)ptr, (u32)ptr, cnt, mask);
 320              		.loc 1 114 0
 321 0020 3346     		mov	r3, r6
 322 0022 2A46     		mov	r2, r5
 323 0024 2146     		mov	r1, r4
 324 0026 2046     		mov	r0, r4
 115:uc_libc_dev/misc/utils.c **** 		#endif
 116:uc_libc_dev/misc/utils.c **** }
 325              		.loc 1 116 0
 326 0028 BDE87040 		pop	{r4, r5, r6, lr}
 327              	.LCFI5:
 328              		.cfi_remember_state
 329              		.cfi_restore 14
 330              		.cfi_restore 6
 331              		.cfi_restore 5
 332              		.cfi_restore 4
 333              		.cfi_def_cfa_offset 0
 334              	.LVL45:
 114:uc_libc_dev/misc/utils.c **** 		#endif
 335              		.loc 1 114 0
 336 002c FFF7FEBF 		b	put_dump16
 337              	.LVL46:
 338              	.L27:
 339              	.LCFI6:
 340              		.cfi_restore_state
 341 0030 70BD     		pop	{r4, r5, r6, pc}
 342              		.cfi_endproc
 343              	.LFE2:
 345              		.section	.text.xatoi,"ax",%progbits
 346              		.align	1
 347              		.global	xatoi
 348              		.thumb
 349              		.thumb_func
 351              	xatoi:
 352              	.LFB3:
 117:uc_libc_dev/misc/utils.c **** #endif
 118:uc_libc_dev/misc/utils.c **** 
 119:uc_libc_dev/misc/utils.c **** #if (UTIL_USE_XATOI == pdON)
 120:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
 121:uc_libc_dev/misc/utils.c **** // Descrição: 	Converte uma string no formato hex, bin ou octal para um número inteiro
 122:uc_libc_dev/misc/utils.c **** //				Exemplos: "0x10" ret 16. 	"-100" ret -100. 	"0b1100" ret 12
 123:uc_libc_dev/misc/utils.c **** // Parametros: 	Endereço da string para ser convertida e o endereço da var inteira par retorno da c
 124:uc_libc_dev/misc/utils.c **** // Retorna: 	pdTRUE se houve conversão ou pdFALSE caso não foi possivel converter
 125:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
 126:uc_libc_dev/misc/utils.c **** // Converte ASCII para Integer
 127:uc_libc_dev/misc/utils.c **** int xatoi (char **str, long *res) {
 353              		.loc 1 127 0
 354              		.cfi_startproc
 355              		@ args = 0, pretend = 0, frame = 0
 356              		@ frame_needed = 0, uses_anonymous_args = 0
 357              	.LVL47:
 358 0000 70B5     		push	{r4, r5, r6, lr}
 359              	.LCFI7:
 360              		.cfi_def_cfa_offset 16
 361              		.cfi_offset 4, -16
 362              		.cfi_offset 5, -12
 363              		.cfi_offset 6, -8
 364              		.cfi_offset 14, -4
 365              	.LVL48:
 366              	.L33:
 128:uc_libc_dev/misc/utils.c **** 	u32 val;
 129:uc_libc_dev/misc/utils.c **** 	u8 c, radix, s = 0;
 130:uc_libc_dev/misc/utils.c **** 
 131:uc_libc_dev/misc/utils.c **** 
 132:uc_libc_dev/misc/utils.c **** 	while ((c = **str) == ' ') (*str)++;
 367              		.loc 1 132 0 discriminator 1
 368 0002 0268     		ldr	r2, [r0]
 369 0004 1378     		ldrb	r3, [r2]	@ zero_extendqisi2
 370              	.LVL49:
 371 0006 202B     		cmp	r3, #32
 372 0008 02D1     		bne	.L54
 373              		.loc 1 132 0 is_stmt 0 discriminator 2
 374 000a 0132     		adds	r2, r2, #1
 375 000c 0260     		str	r2, [r0]
 376 000e F8E7     		b	.L33
 377              	.L54:
 133:uc_libc_dev/misc/utils.c **** 	if (c == '-') {
 378              		.loc 1 133 0 is_stmt 1
 379 0010 2D2B     		cmp	r3, #45
 380              	.LVL50:
 134:uc_libc_dev/misc/utils.c **** 		s = 1;
 135:uc_libc_dev/misc/utils.c **** 		c = *(++(*str));
 381              		.loc 1 135 0
 382 0012 01BF     		itttt	eq
 383 0014 531C     		addeq	r3, r2, #1
 384              	.LVL51:
 385 0016 0360     		streq	r3, [r0]
 386              	.LVL52:
 387 0018 5378     		ldrbeq	r3, [r2, #1]	@ zero_extendqisi2
 388              	.LVL53:
 134:uc_libc_dev/misc/utils.c **** 		s = 1;
 389              		.loc 1 134 0
 390 001a 0126     		moveq	r6, #1
 129:uc_libc_dev/misc/utils.c **** 
 391              		.loc 1 129 0
 392 001c 18BF     		it	ne
 393 001e 0026     		movne	r6, #0
 394              	.LVL54:
 136:uc_libc_dev/misc/utils.c **** 	}
 137:uc_libc_dev/misc/utils.c **** 	
 138:uc_libc_dev/misc/utils.c **** 	if (c == '0') {
 395              		.loc 1 138 0
 396 0020 302B     		cmp	r3, #48
 397 0022 1CD1     		bne	.L36
 139:uc_libc_dev/misc/utils.c **** 		c = *(++(*str));
 398              		.loc 1 139 0
 399 0024 0268     		ldr	r2, [r0]
 400 0026 531C     		adds	r3, r2, #1
 401              	.LVL55:
 402 0028 0360     		str	r3, [r0]
 403 002a 5378     		ldrb	r3, [r2, #1]	@ zero_extendqisi2
 404              	.LVL56:
 140:uc_libc_dev/misc/utils.c **** 		if (c <= ' ') {
 405              		.loc 1 140 0
 406 002c 202B     		cmp	r3, #32
 407 002e 02D8     		bhi	.L37
 141:uc_libc_dev/misc/utils.c **** 			*res = 0; return pdTRUE;
 408              		.loc 1 141 0
 409 0030 0023     		movs	r3, #0
 410              	.LVL57:
 411 0032 0B60     		str	r3, [r1]
 412              	.LVL58:
 413 0034 36E0     		b	.L53
 414              	.LVL59:
 415              	.L37:
 142:uc_libc_dev/misc/utils.c **** 		}
 143:uc_libc_dev/misc/utils.c **** 		if (c == 'x') {
 416              		.loc 1 143 0
 417 0036 782B     		cmp	r3, #120
 418 0038 04D1     		bne	.L39
 419              	.LVL60:
 144:uc_libc_dev/misc/utils.c **** 			radix = 16;
 145:uc_libc_dev/misc/utils.c **** 			c = *(++(*str));
 420              		.loc 1 145 0
 421 003a 931C     		adds	r3, r2, #2
 422              	.LVL61:
 423 003c 0360     		str	r3, [r0]
 424              	.LVL62:
 425 003e 9378     		ldrb	r3, [r2, #2]	@ zero_extendqisi2
 426              	.LVL63:
 144:uc_libc_dev/misc/utils.c **** 			radix = 16;
 427              		.loc 1 144 0
 428 0040 1025     		movs	r5, #16
 429 0042 13E0     		b	.L40
 430              	.LVL64:
 431              	.L39:
 146:uc_libc_dev/misc/utils.c **** 		} else {
 147:uc_libc_dev/misc/utils.c **** 			if (c == 'b') {
 432              		.loc 1 147 0
 433 0044 622B     		cmp	r3, #98
 434 0046 04D1     		bne	.L41
 435              	.LVL65:
 148:uc_libc_dev/misc/utils.c **** 				radix = 2;
 149:uc_libc_dev/misc/utils.c **** 				c = *(++(*str));
 436              		.loc 1 149 0
 437 0048 931C     		adds	r3, r2, #2
 438              	.LVL66:
 439 004a 0360     		str	r3, [r0]
 440              	.LVL67:
 441 004c 9378     		ldrb	r3, [r2, #2]	@ zero_extendqisi2
 442              	.LVL68:
 148:uc_libc_dev/misc/utils.c **** 				radix = 2;
 443              		.loc 1 148 0
 444 004e 0225     		movs	r5, #2
 445 0050 0CE0     		b	.L40
 446              	.LVL69:
 447              	.L41:
 150:uc_libc_dev/misc/utils.c **** 			} else {
 151:uc_libc_dev/misc/utils.c **** 				if ((c >= '0')&&(c <= '9'))
 448              		.loc 1 151 0
 449 0052 A3F13002 		sub	r2, r3, #48
 450 0056 092A     		cmp	r2, #9
 451 0058 07D9     		bls	.L49
 452              	.LVL70:
 453              	.L42:
 152:uc_libc_dev/misc/utils.c **** 					radix = 8;
 153:uc_libc_dev/misc/utils.c **** 				else
 154:uc_libc_dev/misc/utils.c **** 					return pdFALSE;
 454              		.loc 1 154 0
 455 005a 0020     		movs	r0, #0
 456              	.LVL71:
 457 005c 70BD     		pop	{r4, r5, r6, pc}
 458              	.LVL72:
 459              	.L36:
 155:uc_libc_dev/misc/utils.c **** 			}
 156:uc_libc_dev/misc/utils.c **** 		}
 157:uc_libc_dev/misc/utils.c **** 	} else {
 158:uc_libc_dev/misc/utils.c **** 		if ((c < '1')||(c > '9'))
 460              		.loc 1 158 0
 461 005e A3F13102 		sub	r2, r3, #49
 462 0062 082A     		cmp	r2, #8
 463 0064 F9D8     		bhi	.L42
 159:uc_libc_dev/misc/utils.c **** 			return pdFALSE;
 160:uc_libc_dev/misc/utils.c **** 		radix = 10;
 464              		.loc 1 160 0
 465 0066 0A25     		movs	r5, #10
 466 0068 00E0     		b	.L40
 467              	.L49:
 152:uc_libc_dev/misc/utils.c **** 				else
 468              		.loc 1 152 0
 469 006a 0825     		movs	r5, #8
 470              	.L40:
 471              	.LVL73:
 161:uc_libc_dev/misc/utils.c **** 	}
 162:uc_libc_dev/misc/utils.c **** 	val = 0;
 472              		.loc 1 162 0
 473 006c 0024     		movs	r4, #0
 474              	.LVL74:
 475              	.L43:
 163:uc_libc_dev/misc/utils.c **** 	while (c > ' ') {
 476              		.loc 1 163 0
 477 006e 202B     		cmp	r3, #32
 478 0070 15D9     		bls	.L55
 164:uc_libc_dev/misc/utils.c **** 		if (c >= 'a') c -= 0x20;
 479              		.loc 1 164 0
 480 0072 602B     		cmp	r3, #96
 481 0074 84BF     		itt	hi
 482 0076 203B     		subhi	r3, r3, #32
 483              	.LVL75:
 484 0078 DBB2     		uxtbhi	r3, r3
 485              	.LVL76:
 165:uc_libc_dev/misc/utils.c **** 		c -= '0';
 486              		.loc 1 165 0
 487 007a A3F13002 		sub	r2, r3, #48
 488 007e D2B2     		uxtb	r2, r2
 489              	.LVL77:
 166:uc_libc_dev/misc/utils.c **** 		if (c >= 17) {
 490              		.loc 1 166 0
 491 0080 102A     		cmp	r2, #16
 492 0082 03D9     		bls	.L45
 167:uc_libc_dev/misc/utils.c **** 			c -= 7;
 493              		.loc 1 167 0
 494 0084 373B     		subs	r3, r3, #55
 495 0086 DAB2     		uxtb	r2, r3
 496              	.LVL78:
 168:uc_libc_dev/misc/utils.c **** 			if (c <= 9) return pdFALSE;
 497              		.loc 1 168 0
 498 0088 092A     		cmp	r2, #9
 499 008a E6D9     		bls	.L42
 500              	.L45:
 169:uc_libc_dev/misc/utils.c **** 		}
 170:uc_libc_dev/misc/utils.c **** 		if (c >= radix) return pdFALSE;
 501              		.loc 1 170 0
 502 008c AA42     		cmp	r2, r5
 503 008e E4D2     		bcs	.L42
 171:uc_libc_dev/misc/utils.c **** 		val = val * radix + c;
 172:uc_libc_dev/misc/utils.c **** 		c = *(++(*str));
 504              		.loc 1 172 0
 505 0090 0368     		ldr	r3, [r0]
 171:uc_libc_dev/misc/utils.c **** 		val = val * radix + c;
 506              		.loc 1 171 0
 507 0092 04FB0524 		mla	r4, r4, r5, r2
 508              	.LVL79:
 509              		.loc 1 172 0
 510 0096 5A1C     		adds	r2, r3, #1
 511              	.LVL80:
 512 0098 0260     		str	r2, [r0]
 513 009a 5B78     		ldrb	r3, [r3, #1]	@ zero_extendqisi2
 514              	.LVL81:
 515 009c E7E7     		b	.L43
 516              	.L55:
 173:uc_libc_dev/misc/utils.c **** 	}
 174:uc_libc_dev/misc/utils.c **** 	if (s) val = -val;
 517              		.loc 1 174 0
 518 009e 06B1     		cbz	r6, .L47
 519              		.loc 1 174 0 is_stmt 0 discriminator 1
 520 00a0 6442     		negs	r4, r4
 521              	.LVL82:
 522              	.L47:
 175:uc_libc_dev/misc/utils.c **** 	*res = val;
 523              		.loc 1 175 0 is_stmt 1
 524 00a2 0C60     		str	r4, [r1]
 525              	.LVL83:
 526              	.L53:
 176:uc_libc_dev/misc/utils.c **** 	return pdTRUE;
 527              		.loc 1 176 0
 528 00a4 0120     		movs	r0, #1
 529              	.LVL84:
 177:uc_libc_dev/misc/utils.c **** }
 530              		.loc 1 177 0
 531 00a6 70BD     		pop	{r4, r5, r6, pc}
 532              		.cfi_endproc
 533              	.LFE3:
 535              		.global	__aeabi_dmul
 536              		.global	__aeabi_i2d
 537              		.global	__aeabi_dadd
 538              		.section	.text.xatof,"ax",%progbits
 539              		.align	1
 540              		.global	xatof
 541              		.thumb
 542              		.thumb_func
 544              	xatof:
 545              	.LFB4:
 178:uc_libc_dev/misc/utils.c **** #endif
 179:uc_libc_dev/misc/utils.c **** 
 180:uc_libc_dev/misc/utils.c **** 
 181:uc_libc_dev/misc/utils.c **** #if (UTIL_USE_XITOA == pdON)
 182:uc_libc_dev/misc/utils.c **** 
 183:uc_libc_dev/misc/utils.c **** // Converte inteiro para string. Integer to ASCII
 184:uc_libc_dev/misc/utils.c **** void xitoa (char* str, long val) {
 185:uc_libc_dev/misc/utils.c **** 	u8 c;
 186:uc_libc_dev/misc/utils.c **** 	long v;
 187:uc_libc_dev/misc/utils.c **** 	char* p1 = str;
 188:uc_libc_dev/misc/utils.c **** 
 189:uc_libc_dev/misc/utils.c **** 	v = (val<0)?-val:val;
 190:uc_libc_dev/misc/utils.c **** 
 191:uc_libc_dev/misc/utils.c **** 	// converter para ascii
 192:uc_libc_dev/misc/utils.c **** 	do {
 193:uc_libc_dev/misc/utils.c **** 		c = (u8)(v % 10);
 194:uc_libc_dev/misc/utils.c **** 		if (c >= 10) c += 7;
 195:uc_libc_dev/misc/utils.c **** 		c += '0';
 196:uc_libc_dev/misc/utils.c **** 		*p1++ = c;
 197:uc_libc_dev/misc/utils.c **** 		v /= 10;
 198:uc_libc_dev/misc/utils.c **** 	} while (v);
 199:uc_libc_dev/misc/utils.c **** 
 200:uc_libc_dev/misc/utils.c **** 	if (val<0) *p1++ = '-';
 201:uc_libc_dev/misc/utils.c **** 	*p1 = 0;
 202:uc_libc_dev/misc/utils.c **** 
 203:uc_libc_dev/misc/utils.c **** 	// inverter string
 204:uc_libc_dev/misc/utils.c **** 	char* p2 = &str[strlen(str)-1];
 205:uc_libc_dev/misc/utils.c **** 	p1 = str;
 206:uc_libc_dev/misc/utils.c **** 	while(p1<p2) {
 207:uc_libc_dev/misc/utils.c **** 		c= *p2;
 208:uc_libc_dev/misc/utils.c **** 		*p2-- = *p1;
 209:uc_libc_dev/misc/utils.c **** 		*p1++ = c;
 210:uc_libc_dev/misc/utils.c **** 	}
 211:uc_libc_dev/misc/utils.c **** }
 212:uc_libc_dev/misc/utils.c **** #endif
 213:uc_libc_dev/misc/utils.c **** 
 214:uc_libc_dev/misc/utils.c **** #if (UTIL_USE_XATOF == pdON)
 215:uc_libc_dev/misc/utils.c **** 
 216:uc_libc_dev/misc/utils.c **** // converte string para float. ASCII to Float
 217:uc_libc_dev/misc/utils.c **** // Exemplos: xatof("1.2") xatof("-125.587");
 218:uc_libc_dev/misc/utils.c **** 
 219:uc_libc_dev/misc/utils.c **** double xatof(char *s) {
 546              		.loc 1 219 0
 547              		.cfi_startproc
 548              		@ args = 0, pretend = 0, frame = 8
 549              		@ frame_needed = 0, uses_anonymous_args = 0
 550              	.LVL85:
 551 0000 2DE9F74F 		push	{r0, r1, r2, r4, r5, r6, r7, r8, r9, r10, fp, lr}
 552              	.LCFI8:
 553              		.cfi_def_cfa_offset 48
 554              		.cfi_offset 4, -36
 555              		.cfi_offset 5, -32
 556              		.cfi_offset 6, -28
 557              		.cfi_offset 7, -24
 558              		.cfi_offset 8, -20
 559              		.cfi_offset 9, -16
 560              		.cfi_offset 10, -12
 561              		.cfi_offset 11, -8
 562              		.cfi_offset 14, -4
 563              		.loc 1 219 0
 564 0004 0646     		mov	r6, r0
 220:uc_libc_dev/misc/utils.c ****     double a = 0.0;
 221:uc_libc_dev/misc/utils.c ****     int e = 0;
 222:uc_libc_dev/misc/utils.c ****     int c;
 223:uc_libc_dev/misc/utils.c **** 
 224:uc_libc_dev/misc/utils.c ****     // checa se trata de um número negativo
 225:uc_libc_dev/misc/utils.c ****     int fneg = pdFALSE;
 565              		.loc 1 225 0
 566 0006 0025     		movs	r5, #0
 567 0008 2C46     		mov	r4, r5
 226:uc_libc_dev/misc/utils.c ****     if (*s == '-') { fneg = pdTRUE; s++;}
 568              		.loc 1 226 0
 569 000a 0378     		ldrb	r3, [r0]	@ zero_extendqisi2
 570 000c 2D2B     		cmp	r3, #45
 571              	.LVL86:
 572 000e 06BF     		itte	eq
 573 0010 0136     		addeq	r6, r6, #1
 574              	.LVL87:
 575 0012 4FF00108 		moveq	r8, #1
 225:uc_libc_dev/misc/utils.c ****     if (*s == '-') { fneg = pdTRUE; s++;}
 576              		.loc 1 225 0
 577 0016 4FF00008 		movne	r8, #0
 578              	.LVL88:
 579              	.L58:
 227:uc_libc_dev/misc/utils.c **** 
 228:uc_libc_dev/misc/utils.c ****     while ((c = *s++) != '\0' && isdigit(c)) {
 580              		.loc 1 228 0
 581 001a 16F8017B 		ldrb	r7, [r6], #1	@ zero_extendqisi2
 582              	.LVL89:
 583 001e 002F     		cmp	r7, #0
 584 0020 00F08A80 		beq	.L59
 585              		.loc 1 228 0 is_stmt 0 discriminator 1
 586 0024 FFF7FEFF 		bl	__locale_ctype_ptr
 587              	.LVL90:
 588 0028 3844     		add	r0, r0, r7
 589 002a 4378     		ldrb	r3, [r0, #1]	@ zero_extendqisi2
 590 002c 03F00403 		and	r3, r3, #4
 591 0030 03F0FF0A 		and	r10, r3, #255
 592 0034 93B1     		cbz	r3, .L89
 229:uc_libc_dev/misc/utils.c ****         a = a*10.0 + (c - '0');
 593              		.loc 1 229 0 is_stmt 1
 594 0036 0022     		movs	r2, #0
 595 0038 474B     		ldr	r3, .L93+8
 596 003a 2846     		mov	r0, r5
 597 003c 2146     		mov	r1, r4
 598 003e FFF7FEFF 		bl	__aeabi_dmul
 599              	.LVL91:
 600 0042 0446     		mov	r4, r0
 601              	.LVL92:
 602 0044 0D46     		mov	r5, r1
 603 0046 A7F13000 		sub	r0, r7, #48
 604 004a FFF7FEFF 		bl	__aeabi_i2d
 605              	.LVL93:
 606 004e 2246     		mov	r2, r4
 607 0050 2B46     		mov	r3, r5
 608 0052 FFF7FEFF 		bl	__aeabi_dadd
 609              	.LVL94:
 610 0056 0546     		mov	r5, r0
 611 0058 0C46     		mov	r4, r1
 612              	.LVL95:
 613 005a DEE7     		b	.L58
 614              	.LVL96:
 615              	.L89:
 230:uc_libc_dev/misc/utils.c ****     }
 231:uc_libc_dev/misc/utils.c ****     if (c == '.') {
 616              		.loc 1 231 0
 617 005c 2E2F     		cmp	r7, #46
 618 005e 20D1     		bne	.L61
 228:uc_libc_dev/misc/utils.c ****         a = a*10.0 + (c - '0');
 619              		.loc 1 228 0
 620 0060 B146     		mov	r9, r6
 621              	.LVL97:
 622              	.L62:
 623 0062 C9EB060A 		rsb	r10, r9, r6
 624              	.LVL98:
 232:uc_libc_dev/misc/utils.c ****         while ((c = *s++) != '\0' && isdigit(c)) {
 625              		.loc 1 232 0
 626 0066 19F8017B 		ldrb	r7, [r9], #1	@ zero_extendqisi2
 627              	.LVL99:
 628 006a 002F     		cmp	r7, #0
 629 006c 55D0     		beq	.L73
 630              		.loc 1 232 0 is_stmt 0 discriminator 1
 631 006e FFF7FEFF 		bl	__locale_ctype_ptr
 632              	.LVL100:
 633 0072 3844     		add	r0, r0, r7
 634 0074 4378     		ldrb	r3, [r0, #1]	@ zero_extendqisi2
 635 0076 5B07     		lsls	r3, r3, #29
 636 0078 12D5     		bpl	.L90
 233:uc_libc_dev/misc/utils.c ****             a = a*10.0 + (c - '0');
 637              		.loc 1 233 0 is_stmt 1
 638 007a 0022     		movs	r2, #0
 639 007c 364B     		ldr	r3, .L93+8
 640 007e 2846     		mov	r0, r5
 641 0080 2146     		mov	r1, r4
 642 0082 FFF7FEFF 		bl	__aeabi_dmul
 643              	.LVL101:
 644 0086 0446     		mov	r4, r0
 645              	.LVL102:
 646 0088 0D46     		mov	r5, r1
 647 008a A7F13000 		sub	r0, r7, #48
 648 008e FFF7FEFF 		bl	__aeabi_i2d
 649              	.LVL103:
 650 0092 2246     		mov	r2, r4
 651 0094 2B46     		mov	r3, r5
 652 0096 FFF7FEFF 		bl	__aeabi_dadd
 653              	.LVL104:
 654 009a 0546     		mov	r5, r0
 655 009c 0C46     		mov	r4, r1
 656              	.LVL105:
 657 009e E0E7     		b	.L62
 658              	.LVL106:
 659              	.L90:
 232:uc_libc_dev/misc/utils.c ****         while ((c = *s++) != '\0' && isdigit(c)) {
 660              		.loc 1 232 0
 661 00a0 4E46     		mov	r6, r9
 662              	.LVL107:
 663              	.L61:
 234:uc_libc_dev/misc/utils.c ****             e = e-1;
 235:uc_libc_dev/misc/utils.c ****         }
 236:uc_libc_dev/misc/utils.c ****     }
 237:uc_libc_dev/misc/utils.c ****     if (c == 'e' || c == 'E') {
 664              		.loc 1 237 0
 665 00a2 652F     		cmp	r7, #101
 666 00a4 01D0     		beq	.L65
 667              		.loc 1 237 0 is_stmt 0 discriminator 1
 668 00a6 452F     		cmp	r7, #69
 669 00a8 37D1     		bne	.L73
 670              	.L65:
 671              	.LVL108:
 672              	.LBB2:
 238:uc_libc_dev/misc/utils.c ****         int sign = 1;
 239:uc_libc_dev/misc/utils.c ****         int i = 0;
 240:uc_libc_dev/misc/utils.c ****         c = *s++;
 673              		.loc 1 240 0 is_stmt 1
 674 00aa 3778     		ldrb	r7, [r6]	@ zero_extendqisi2
 675              	.LVL109:
 241:uc_libc_dev/misc/utils.c ****         if (c == '+')
 676              		.loc 1 241 0
 677 00ac 2B2F     		cmp	r7, #43
 678 00ae 03D1     		bne	.L66
 242:uc_libc_dev/misc/utils.c ****             c = *s++;
 679              		.loc 1 242 0
 680 00b0 06F10209 		add	r9, r6, #2
 681              	.LVL110:
 682 00b4 7778     		ldrb	r7, [r6, #1]	@ zero_extendqisi2
 683              	.LVL111:
 684 00b6 03E0     		b	.L88
 685              	.LVL112:
 686              	.L66:
 243:uc_libc_dev/misc/utils.c ****         else if (c == '-') {
 687              		.loc 1 243 0
 688 00b8 2D2F     		cmp	r7, #45
 689 00ba 04D0     		beq	.L68
 240:uc_libc_dev/misc/utils.c ****         if (c == '+')
 690              		.loc 1 240 0
 691 00bc 06F10109 		add	r9, r6, #1
 692              	.LVL113:
 693              	.L88:
 238:uc_libc_dev/misc/utils.c ****         int i = 0;
 694              		.loc 1 238 0
 695 00c0 4FF0010B 		mov	fp, #1
 696 00c4 04E0     		b	.L67
 697              	.LVL114:
 698              	.L68:
 244:uc_libc_dev/misc/utils.c ****             c = *s++;
 699              		.loc 1 244 0
 700 00c6 7778     		ldrb	r7, [r6, #1]	@ zero_extendqisi2
 701              	.LVL115:
 702 00c8 06F10209 		add	r9, r6, #2
 703              	.LVL116:
 245:uc_libc_dev/misc/utils.c ****             sign = -1;
 704              		.loc 1 245 0
 705 00cc 4FF0FF3B 		mov	fp, #-1
 706              	.LVL117:
 707              	.L67:
 238:uc_libc_dev/misc/utils.c ****         int i = 0;
 708              		.loc 1 238 0
 709 00d0 0026     		movs	r6, #0
 246:uc_libc_dev/misc/utils.c ****         }
 247:uc_libc_dev/misc/utils.c ****         while (isdigit(c)) {
 248:uc_libc_dev/misc/utils.c ****             i = i*10 + (c - '0');
 710              		.loc 1 248 0
 711 00d2 0A22     		movs	r2, #10
 712              	.LVL118:
 713              	.L69:
 714 00d4 0192     		str	r2, [sp, #4]
 715              	.LVL119:
 247:uc_libc_dev/misc/utils.c ****             i = i*10 + (c - '0');
 716              		.loc 1 247 0
 717 00d6 FFF7FEFF 		bl	__locale_ctype_ptr
 718              	.LVL120:
 719 00da 3844     		add	r0, r0, r7
 720 00dc 4378     		ldrb	r3, [r0, #1]	@ zero_extendqisi2
 721 00de 019A     		ldr	r2, [sp, #4]
 722 00e0 13F0040F 		tst	r3, #4
 723 00e4 05D0     		beq	.L91
 724              		.loc 1 248 0
 725 00e6 303F     		subs	r7, r7, #48
 726              	.LVL121:
 727 00e8 02FB0676 		mla	r6, r2, r6, r7
 728              	.LVL122:
 249:uc_libc_dev/misc/utils.c ****             c = *s++;
 729              		.loc 1 249 0
 730 00ec 19F8017B 		ldrb	r7, [r9], #1	@ zero_extendqisi2
 731              	.LVL123:
 732 00f0 F0E7     		b	.L69
 733              	.LVL124:
 734              	.L91:
 250:uc_libc_dev/misc/utils.c ****         }
 251:uc_libc_dev/misc/utils.c ****         e += i*sign;
 735              		.loc 1 251 0
 736 00f2 0BFB06AA 		mla	r10, fp, r6, r10
 737              	.LVL125:
 738 00f6 5646     		mov	r6, r10
 739              	.LVL126:
 740              	.L71:
 741              	.LBE2:
 252:uc_libc_dev/misc/utils.c ****     }
 253:uc_libc_dev/misc/utils.c ****     while (e > 0) {
 742              		.loc 1 253 0
 743 00f8 002E     		cmp	r6, #0
 744 00fa 09DD     		ble	.L92
 254:uc_libc_dev/misc/utils.c ****         a *= 10.0;
 745              		.loc 1 254 0
 746 00fc 2846     		mov	r0, r5
 747 00fe 2146     		mov	r1, r4
 748 0100 0022     		movs	r2, #0
 749 0102 154B     		ldr	r3, .L93+8
 750 0104 FFF7FEFF 		bl	__aeabi_dmul
 751              	.LVL127:
 255:uc_libc_dev/misc/utils.c ****         e--;
 752              		.loc 1 255 0
 753 0108 013E     		subs	r6, r6, #1
 754              	.LVL128:
 254:uc_libc_dev/misc/utils.c ****         a *= 10.0;
 755              		.loc 1 254 0
 756 010a 0546     		mov	r5, r0
 757              	.LVL129:
 758 010c 0C46     		mov	r4, r1
 759              	.LVL130:
 760 010e F3E7     		b	.L71
 761              	.LVL131:
 762              	.L92:
 763 0110 BAF1000F 		cmp	r10, #0
 764 0114 A8BF     		it	ge
 765 0116 CAEB0A0A 		rsbge	r10, r10, r10
 766              	.LVL132:
 767              	.L73:
 256:uc_libc_dev/misc/utils.c ****     }
 257:uc_libc_dev/misc/utils.c ****     while (e < 0) {
 768              		.loc 1 257 0
 769 011a BAF1000F 		cmp	r10, #0
 770 011e 0BD0     		beq	.L59
 258:uc_libc_dev/misc/utils.c ****         a *= 0.1;
 771              		.loc 1 258 0
 772 0120 0BA3     		adr	r3, .L93
 773 0122 D3E90023 		ldrd	r2, [r3]
 774 0126 2846     		mov	r0, r5
 775 0128 2146     		mov	r1, r4
 776 012a FFF7FEFF 		bl	__aeabi_dmul
 777              	.LVL133:
 259:uc_libc_dev/misc/utils.c ****         e++;
 778              		.loc 1 259 0
 779 012e 0AF1010A 		add	r10, r10, #1
 780              	.LVL134:
 258:uc_libc_dev/misc/utils.c ****         a *= 0.1;
 781              		.loc 1 258 0
 782 0132 0546     		mov	r5, r0
 783              	.LVL135:
 784 0134 0C46     		mov	r4, r1
 785              	.LVL136:
 786 0136 F0E7     		b	.L73
 787              	.LVL137:
 788              	.L59:
 260:uc_libc_dev/misc/utils.c ****     }
 261:uc_libc_dev/misc/utils.c **** 
 262:uc_libc_dev/misc/utils.c ****     if (fneg) return -a;
 789              		.loc 1 262 0
 790 0138 B8F1000F 		cmp	r8, #0
 791 013c 02D0     		beq	.L78
 792              		.loc 1 262 0 is_stmt 0 discriminator 1
 793 013e 04F10041 		add	r1, r4, #-2147483648
 794 0142 00E0     		b	.L75
 795              	.L78:
 796 0144 2146     		mov	r1, r4
 797              	.L75:
 263:uc_libc_dev/misc/utils.c ****     else return a;
 264:uc_libc_dev/misc/utils.c **** }
 798              		.loc 1 264 0 is_stmt 1
 799 0146 2846     		mov	r0, r5
 800 0148 03B0     		add	sp, sp, #12
 801              	.LCFI9:
 802              		.cfi_def_cfa_offset 36
 803              		@ sp needed
 804 014a BDE8F08F 		pop	{r4, r5, r6, r7, r8, r9, r10, fp, pc}
 805              	.LVL138:
 806              	.L94:
 807 014e 00BF     		.align	3
 808              	.L93:
 809 0150 9A999999 		.word	-1717986918
 810 0154 9999B93F 		.word	1069128089
 811 0158 00002440 		.word	1076101120
 812              		.cfi_endproc
 813              	.LFE4:
 815              		.section	.text.minutesToHours,"ax",%progbits
 816              		.align	1
 817              		.global	minutesToHours
 818              		.thumb
 819              		.thumb_func
 821              	minutesToHours:
 822              	.LFB5:
 265:uc_libc_dev/misc/utils.c **** #endif
 266:uc_libc_dev/misc/utils.c **** 
 267:uc_libc_dev/misc/utils.c **** #if (UTIL_USE_DATETIME == pdON)
 268:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
 269:uc_libc_dev/misc/utils.c **** // Descrição: 	Retorna com hora e minutos da contagem do minuto total
 270:uc_libc_dev/misc/utils.c **** // Parametros: 	min: Minutos corrido
 271:uc_libc_dev/misc/utils.c **** //				h: ponteiro para retorno das horas
 272:uc_libc_dev/misc/utils.c **** //				m: ponteiro para retorno dos minutos
 273:uc_libc_dev/misc/utils.c **** // Retorna: 	Horas e minutos
 274:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
 275:uc_libc_dev/misc/utils.c **** void minutesToHours(uint min, uint* h, uint* m) {
 823              		.loc 1 275 0
 824              		.cfi_startproc
 825              		@ args = 0, pretend = 0, frame = 0
 826              		@ frame_needed = 0, uses_anonymous_args = 0
 827              	.LVL139:
 828 0000 10B5     		push	{r4, lr}
 829              	.LCFI10:
 830              		.cfi_def_cfa_offset 8
 831              		.cfi_offset 4, -8
 832              		.cfi_offset 14, -4
 276:uc_libc_dev/misc/utils.c **** 	*h = (uint)(min/60);
 833              		.loc 1 276 0
 834 0002 3C24     		movs	r4, #60
 835 0004 B0FBF4F3 		udiv	r3, r0, r4
 836 0008 0B60     		str	r3, [r1]
 277:uc_libc_dev/misc/utils.c **** 	*m = min - (*h*60);
 837              		.loc 1 277 0
 838 000a 04FB1303 		mls	r3, r4, r3, r0
 839 000e 1360     		str	r3, [r2]
 840 0010 10BD     		pop	{r4, pc}
 841              		.cfi_endproc
 842              	.LFE5:
 844              		.section	.text.hoursToMinutes,"ax",%progbits
 845              		.align	1
 846              		.global	hoursToMinutes
 847              		.thumb
 848              		.thumb_func
 850              	hoursToMinutes:
 851              	.LFB6:
 278:uc_libc_dev/misc/utils.c **** }
 279:uc_libc_dev/misc/utils.c **** 
 280:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
 281:uc_libc_dev/misc/utils.c **** // Descrição: 	Retorna em minutos total em uma determinada hora e minuto
 282:uc_libc_dev/misc/utils.c **** // Parametros: 	h: Horas para calculo
 283:uc_libc_dev/misc/utils.c **** //				m: Minutos para calculo
 284:uc_libc_dev/misc/utils.c **** //				min: Ponteiro da quantidade de minutos total
 285:uc_libc_dev/misc/utils.c **** // Retorna: 	Minutos corridos
 286:uc_libc_dev/misc/utils.c **** //-------------------------------------------------------------------------------------------------
 287:uc_libc_dev/misc/utils.c **** void hoursToMinutes(uint h, uint m, uint* min) {
 852              		.loc 1 287 0
 853              		.cfi_startproc
 854              		@ args = 0, pretend = 0, frame = 0
 855              		@ frame_needed = 0, uses_anonymous_args = 0
 856              		@ link register save eliminated.
 857              	.LVL140:
 288:uc_libc_dev/misc/utils.c **** 	*min = h*60+m;
 858              		.loc 1 288 0
 859 0000 3C23     		movs	r3, #60
 860 0002 03FB0011 		mla	r1, r3, r0, r1
 861              	.LVL141:
 862 0006 1160     		str	r1, [r2]
 863 0008 7047     		bx	lr
 864              		.cfi_endproc
 865              	.LFE6:
 867              		.section	.rodata.str1.1,"aMS",%progbits,1
 868              	.LC0:
 869 0000 25303858 		.ascii	"%08X: \000"
 869      3A2000
 870              	.LC1:
 871 0007 20253032 		.ascii	" %02X\000"
 871      5800
 872              	.LC2:
 873 000d 203B2000 		.ascii	" ; \000"
 874              	.LC3:
 875 0011 2E00     		.ascii	".\000"
 876              	.LC4:
 877 0013 256300   		.ascii	"%c\000"
 878              	.LC5:
 879 0016 0A00     		.ascii	"\012\000"
 880              	.LC6:
 881 0018 25303878 		.ascii	"%08x \000"
 881      2000
 882              	.LC7:
 883 001e 20253032 		.ascii	" %02x\000"
 883      7800
 884              	.LC8:
 885 0024 20202000 		.ascii	"   \000"
 886              	.LC9:
 887 0028 203A2000 		.ascii	" : \000"
 888              		.text
 889              	.Letext0:
 890              		.file 2 "uc_libc_dev/_libdef/uc_libdefs.h"
 891              		.file 3 "uc_libc_dev/stdio/stdio_uc.h"
 892              		.file 4 "d:\\cc\\arm-yagarto-5.4.2016q3\\arm-none-eabi\\include\\ctype.h"
DEFINED SYMBOLS
                            *ABS*:00000000 utils.c
D:\_temp\_windows\ccnEMnOh.s:20     .text.put_dump:00000000 $t
D:\_temp\_windows\ccnEMnOh.s:25     .text.put_dump:00000000 put_dump
D:\_temp\_windows\ccnEMnOh.s:126    .text.put_dump:00000060 $d
D:\_temp\_windows\ccnEMnOh.s:136    .text.put_dump16:00000000 $t
D:\_temp\_windows\ccnEMnOh.s:141    .text.put_dump16:00000000 put_dump16
D:\_temp\_windows\ccnEMnOh.s:266    .text.put_dump16:00000078 $d
D:\_temp\_windows\ccnEMnOh.s:277    .text.buffer_dump:00000000 $t
D:\_temp\_windows\ccnEMnOh.s:282    .text.buffer_dump:00000000 buffer_dump
D:\_temp\_windows\ccnEMnOh.s:346    .text.xatoi:00000000 $t
D:\_temp\_windows\ccnEMnOh.s:351    .text.xatoi:00000000 xatoi
D:\_temp\_windows\ccnEMnOh.s:539    .text.xatof:00000000 $t
D:\_temp\_windows\ccnEMnOh.s:544    .text.xatof:00000000 xatof
D:\_temp\_windows\ccnEMnOh.s:809    .text.xatof:00000150 $d
D:\_temp\_windows\ccnEMnOh.s:816    .text.minutesToHours:00000000 $t
D:\_temp\_windows\ccnEMnOh.s:821    .text.minutesToHours:00000000 minutesToHours
D:\_temp\_windows\ccnEMnOh.s:845    .text.hoursToMinutes:00000000 $t
D:\_temp\_windows\ccnEMnOh.s:850    .text.hoursToMinutes:00000000 hoursToMinutes
                     .debug_frame:00000010 $d

UNDEFINED SYMBOLS
rprintf
__aeabi_dmul
__aeabi_i2d
__aeabi_dadd
__locale_ctype_ptr
